Most software programs have text strings that are displayed to provide information to users. However, many software programs are intended to be used by people who speak different languages. Therefore, it is desirable to provide language-specific versions of software programs. To facilitate versions in different languages, many programming languages and software development environments provide tools to allow the displayable text strings of a program to be isolated and conveniently replaced or swapped. Typically, a software developer writes program source code and uses resource references in the source code where text strings (resource strings) are to be incorporated at compile time. The identifiers and the respective resource strings, in English, for example, are stored in a resource file. At compile time, each reference/ID in the source code is replaced with its corresponding resource string in the resource file and is embedded in the compiled program. Another more common approach, discussed below, is to reference a resource file that is loaded or accessed at run time according to a reference thereto.
If the program is to be made available for another human language—Spanish, for instance—then a Spanish-specific resource file is built. The same resource string identifiers are used for the strings in the Spanish resource file, which are translated equivalents of the English resource strings. A program project might require many such language-specific resource files, each containing semantically equivalent text strings in respective human languages for which versions of the program are desired. Any of the resource files may be used to create a corresponding language-specific program or distribution thereof.
Because software developers are usually only versant in one or a few languages, human translators are employed to translate the source resource strings (authored by the developer) to a target language. Different translators might be employed for each different language for which a resource file is needed. This arrangement may have several problems. Because a language-specific version of a program will require the services of a human translator, the process of building the language-specific version of the program can be significantly delayed while awaiting a corresponding translation. Moreover, because many resource strings are short, translation can be difficult. Lack of information about the context of a resource string (circumstances under which a user will encounter the resource string) can lead to inaccurate translations. While programmer comments can help, such comments take time to write, and for that reason they are often omitted. Screen shots of a program displaying the strings in the source language can be provided to a translator, but this also can be costly and time-consuming.
Techniques related to automated context provisioning are discussed below.